/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package br.com.documentar.model;

import java.sql.ResultSet;
import java.util.ArrayList;
import java.util.List;
import javax.swing.DefaultComboBoxModel;
import javax.swing.table.DefaultTableModel;

/**
 *
 * @author Santos
 */
public class AssociarDocumentoObjetoModel {

    private ProdutoModel produtoModel;
    private AssociarObjetoVersaoModel objetoVersaoModel;
    private TelaModel telaModel;
    private DocumentarModel documentoModel;
    private ObjetoModel objetoModel;
    private CategoriaArvoreModel categoriaModel;
    private char ativo;
    private String nomeTela;

    public String getNomeTela() {
        return nomeTela;
    }

    public void setNomeTela(String nomeTela) {
        this.nomeTela = nomeTela;
    }

    public TelaModel getTelaModel() {
        if (telaModel == null) {
            telaModel = new TelaModel();
        }
        return telaModel;
    }

    public void setTelaModel(TelaModel telaModel) {
        this.telaModel = telaModel;
    }

    public CategoriaArvoreModel getCategoriaModel() {
        if (categoriaModel == null) {
            categoriaModel = new CategoriaArvoreModel();
        }
        return categoriaModel;
    }

    public void setCategoriaModel(CategoriaArvoreModel categoriaModel) {
        this.categoriaModel = categoriaModel;
    }

    public char getAtivo() {
        return ativo;
    }

    public void setAtivo(char ativo) {
        this.ativo = ativo;
    }

    /**
     * Ação do script SQL na execução do programa
     */
    private String actionScript;
    /**
     * Modelo de um comboBox para utiliza nas telas
     */
    private DefaultComboBoxModel modelComboBox;
    /**
     * Modelo de uma table para utilizar nas telas
     */
    private DefaultTableModel modelTable;
    /**
     * Lista contendo os dados relacionados da consulta feita na tabela setor.
     * Mas é necessário rever o nome dessa variável, sugestão: lista+Classe
     */
    private List<AssociarDocumentoObjetoModel> listaDocumentoObjeto;
    /**
     * Variavel responsável por recepcionar dados extraidos das consultas
     * executadas na banco de dados
     */
    private ResultSet resultSet;

    public ProdutoModel getProdutoModel() {
        if (produtoModel == null) {
            produtoModel = new ProdutoModel();
        }
        return produtoModel;
    }

    public void setProdutoModel(ProdutoModel produtoModel) {
        this.produtoModel = produtoModel;
    }

    public AssociarObjetoVersaoModel getObjetoVersaoModel() {
        if (objetoVersaoModel == null) {
            objetoVersaoModel = new AssociarObjetoVersaoModel();
        }
        return objetoVersaoModel;
    }

    public void setObjetoVersaoModel(AssociarObjetoVersaoModel objetoVersaoModel) {
        this.objetoVersaoModel = objetoVersaoModel;
    }

    public DocumentarModel getDocumentoModel() {
        if (documentoModel == null) {
            documentoModel = new DocumentarModel();
        }
        return documentoModel;
    }

    public void setDocumentoModel(DocumentarModel documentoModel) {
        this.documentoModel = documentoModel;
    }

    public ObjetoModel getObjetoModel() {
        if (objetoModel == null) {
            objetoModel = new ObjetoModel();
        }
        return objetoModel;
    }

    public void setObjetoModel(ObjetoModel objetoModel) {
        this.objetoModel = objetoModel;
    }

    public String getActionScript() {
        return actionScript;
    }

    public void setActionScript(String actionScript) {
        this.actionScript = actionScript;
    }

    public DefaultComboBoxModel getModelComboBox() {
        if (modelComboBox == null) {
            modelComboBox = new DefaultComboBoxModel();
            modelComboBox.addElement("ESCOLHER");
        }
        return modelComboBox;
    }

    public void setModelComboBox(DefaultComboBoxModel modelComboBox) {
        this.modelComboBox = modelComboBox;
    }

    public DefaultTableModel getModelTable() {
        if (modelTable == null) {
            modelTable = new DefaultTableModel();
            modelTable.addColumn("Produto");
            modelTable.addColumn("Versão");
            modelTable.addColumn("Categoria");
            modelTable.addColumn("Tela");
            modelTable.addColumn("Documento");
            modelTable.addColumn("Objeto");
        }
        return modelTable;
    }

    public void setModelTable(DefaultTableModel modelTable) {
        this.modelTable = modelTable;
    }

    public List<AssociarDocumentoObjetoModel> getListaDocumentoObjeto() {
        if (listaDocumentoObjeto == null) {
            listaDocumentoObjeto = new ArrayList<>();
        }
        return listaDocumentoObjeto;
    }

    public void setListaDocumentoObjeto(List<AssociarDocumentoObjetoModel> listaDocumentoObjeto) {
        this.listaDocumentoObjeto = listaDocumentoObjeto;
    }

    public ResultSet getResultSet() {
        return resultSet;
    }

    public void setResultSet(ResultSet resultSet) {
        this.resultSet = resultSet;
    }

    public AssociarDocumentoObjetoModel getDocumentoObjeto(int documento, int objeto) {
        AssociarDocumentoObjetoModel model = null;
        for (AssociarDocumentoObjetoModel documentoObjetoModel : getListaDocumentoObjeto()) {
            if ((documentoObjetoModel.getDocumentoModel().getCodigo() == documento)
                    && (documentoObjetoModel.getObjetoModel().getCodigo() == objeto)) {
                model = documentoObjetoModel;
                break;
            }
        }
        return model;
    }

}
